package com.jelly.concurrency.syn;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class SyschronizedEventGenerator extends IntGenerator{

	private int currentEvenValue=0;
	private Lock lock = new ReentrantLock();
	
	@Override
	public int next() {
		lock.lock();
		try {
			++currentEvenValue;
			Thread.yield(); //Cause failure faster
			++currentEvenValue;
			return currentEvenValue;
			
		} finally {
			lock.unlock();
		}
	}
	
	public static void main(String[] args) {
		EvenChecker.test(new SyschronizedEventGenerator());
	}
}
